from pages.basePage1 import BasePage
import time
import allure
from selenium.webdriver.support.ui import Select
from config.setting import host_port

# 定位层
class HistoryPage(BasePage):
    def __init__(self):
        BasePage.__init__(self)
        self.driver.get(f'http://{host_port}/SharedParkingPlace/tenant/index.html')
        time.sleep(1)

    # 定位快捷导航栏中的 【历史订单】
    def historyOrder(self):
        return self.driver.find_element_by_link_text('历史订单')

    # 定位下拉选择框1
    def selectFrame1(self):
        selector = Select(self.driver.find_element_by_xpath('//div[@class="page-header"]//div[@class="row"][2]/select[1]'))
        return selector

    # 定位下拉选择框2
    def selectFrame2(self):
        selector = Select(self.driver.find_element_by_id('status'))
        return selector

    # 定位按钮 【搜索】
    def searchOrder(self):
        return self.driver.find_element_by_xpath('//div[@class="page-header"]//div[@class="row"]//button')

    # 定位按钮 【详情】
    def details(self):
        return self.driver.find_element_by_xpath('//tr[@class="text-center"][2]//button[1]')

    # 定位按钮 【关闭】
    def buttonClose(self):
        return self.driver.find_element_by_xpath('//button[@id="close"]')

    # 定位按钮 【评论】
    def buttonComment(self):
        return self.driver.find_element_by_xpath('//tr[@class="text-center"][2]//button[2]')

    # 定位 【评论框】
    def commentFrame(self):
        return self.driver.find_element_by_xpath('//textarea[@id="content"]')

    # 定位按钮 【发送】
    def buttonPublish(self):
        return self.driver.find_element_by_xpath('//div[@id="commment"]')

    # 定位 评论内容
    def commentContent(self):
        return self.driver.find_elements_by_xpath('//div[@class="col-xs-8 col-sm-9 col-md-8"]//div[@class="row"]')

# 操作层
class HistoryHandle(HistoryPage):
    def __init(self):
        HistoryPage.__init__(self)

    # 点击历史记录
    @allure.step('抢租客-点击历史订单')
    def clickHistoryOrder(self):
        element = self.historyOrder()
        self.driver.execute_script('arguments[0].click();', element)

    # 切换表单
    @allure.step('抢租客-历史订单-切换表单')
    def switchFrame(self):
        self.driver.switch_to.frame('testIframe')

    # 选择下拉选择框1 按时间查询or按状态查询
    @allure.step('抢租客-历史订单-选择按时间查询or按状态查询')
    def clickFrame1(self, condition):
        selector = self.selectFrame1()
        selector.select_by_visible_text(condition)

    # 选择下拉框2 进行中or已完成
    @allure.step('抢租客-历史订单-选择进行中or已完成')
    def clickFrame2(self, condition):
        selector = self.selectFrame2()
        selector.select_by_visible_text(condition)

    # 点击按钮 【搜索】
    @allure.step('抢租客-历史订单-点击搜索')
    def clickSearchOrder(self):
        element = self.searchOrder()
        self.driver.execute_script('arguments[0].click();', element)

    # 点击按钮 【详情】
    @allure.step('抢租客-历史订单-点击详情')
    def clickDetails(self):
        element = self.details()
        self.driver.execute_script('arguments[0].click();', element)

    # 点击按钮 【关闭】
    @allure.step('抢租客-历史订单-点击详情-点击关闭')
    def clickClose(self):
        element = self.buttonClose()
        self.driver.execute_script('arguments[0].click();', element)

    # 点击按钮 【评论】
    @allure.step('抢租客-历史订单-点击评论')
    def clickComment(self):
        element = self.buttonComment()
        self.driver.execute_script('arguments[0].click();', element)

    # 输入评论
    @allure.step('抢租客-历史订单-点击评论-输入评论')
    def inputComment(self, comment):
        self.commentFrame().send_keys(comment)

    # 点击按钮 发送
    @allure.step('抢租客-历史订单-点击评论-输入评论-点击发送')
    def clickPublish(self):
        element = self.buttonPublish()
        self.driver.execute_script('arguments[0].click();', element)

    #获取评论内容，输出评论列表
    @allure.step('抢租客-历史订单-点击评论-获取评论内容')
    def obtainComment(self):
        list = []
        comments = self.commentContent()
        for i in comments:
            list.append(i.text)

        return list

# 业务层
class HistoryBusiness(HistoryHandle):
    def __init__(self):
        HistoryHandle.__init__(self)

    # 抢租客-历史订单-切换表单-选择按时间查询or按状态查询-选择时间或状态-点击搜索-点击详情-点击关闭-点击评论-发表评论-断言
    def publishComment(self, condition1, condition2, comment):
        '''
        :param condition1: 按状态查询or按时间查询
        :param condition2: 进行中or已完成
        :param comment: 评论内容
        :return:
        '''
        # 点击快捷导航栏的历史记录
        self.clickHistoryOrder()
        # 切换表单
        self.switchFrame()
        # 选择下拉选择框1
        self.clickFrame1(condition1)
        # 选择下拉选择框2
        self.clickFrame2(condition2)
        # 点击搜索按钮
        self.clickSearchOrder()
        # 点击详情
        self.clickDetails()
        # 点击关闭
        self.clickClose()
        # 点击评论
        self.clickComment()
        # 输入评论
        self.inputComment(comment)
        # 点击发送
        self.clickPublish()
        # 做断言
        asserts = self.obtainComment()
        # print(asserts)

        # self.driver.quit()
        return asserts

if __name__ == '__main__':
    HistoryBusiness().publishComment('按状态查询', '已完成', '这是我的第一条评论')



